struct base_syncset {
	struct basep_syncset basep_sset;
};

struct base_mem_p {
	u64 handle;
};

struct base_mem_handle {
	struct base_mem_p basep;
};

struct basep_syncset {
	struct base_mem_handle mem_handle;
	u64 user_addr;
	u64 size;
	u8 type;
	u8 padding[7];
};

struct base_jd_udata {
	u64 blob[2];
};

struct base_dependency {
	u8 atom_id;
	u8 dependency_type;
};

// special
struct base_jd_atom_v2 {
	u64 jc;
	struct base_jd_udata udata;
	union kbase_pointer extres_list;
	u16 nr_extres;
	u16 core_req;
	struct base_dependency pre_dep[2];
	u8 atom_number;
	u8 prio;
	u8 device_nr;
	u8 padding[5];
};

struct mali_base_gpu_core_props {
	u32 product_id;
	u16 version_status;
	u16 minor_revision;
	u16 major_revision;
	u16 padding;
	u32 gpu_speed_mhz;
	u32 gpu_freq_khz_max;
	u32 gpu_freq_khz_min;
	u32 log2_program_counter_size;
	u32 texture_features[3];
	u64 gpu_available_memory_size;
};

struct mali_base_gpu_l2_cache_props {
	u8 log2_line_size;
	u8 log2_cache_size;
	u8 num_l2_slices;
	u8 padding[5];
};

struct mali_base_gpu_tiler_props {
	u32 bin_size_bytes;
	u32 max_active_levels;
};

struct mali_base_gpu_thread_props {
	u32 max_threads;
	u32 max_workgroup_size;
	u32 max_barrier_size;
	u16 max_registers;
	u8 max_task_queue;
	u8 max_thread_group_split;
	u8 impl_tech;
	u8 padding[7];
};

struct mali_base_gpu_coherent_group {
	u64 core_mask;
	u16 num_cores;
	u16 padding[3];
};

struct mali_base_gpu_coherent_group_info {
	u32 num_groups;
	u32 num_core_groups;
	u32 coherency;
	u32 padding;

	struct mali_base_gpu_coherent_group group[num_groups];
};

struct gpu_raw_gpu_props {
	u64 shader_present;
	u64 tiler_present;
	u64 l2_present;
	u64 unused_1;

	u32 l2_features;
	u32 suspend_size;
	u32 mem_features;
	u32 mmu_features;

	u32 as_present;

	u32 js_present;
	u32 js_features[GPU_MAX_JOB_SLOTS];
	u32 tiler_features;
	u32 texture_features[3];

	u32 gpu_id;

	u32 thread_max_threads;
	u32 thread_max_workgroup_size;
	u32 thread_max_barrier_size;
	u32 thread_features;

	u32 coherency_mode;
};


struct mali_base_gpu_props {
	struct mali_base_gpu_core_props core_props;
	struct mali_base_gpu_l2_cache_props l2_props;
	u64 unused_1;
	struct mali_base_gpu_tiler_props tiler_props;
	struct mali_base_gpu_thread_props thread_props;
	struct gpu_raw_gpu_props raw_props;
	struct mali_base_gpu_coherent_group_info coherency_info;
};
